home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revista CD Expert 8
/
Revista CD Expert nº 08 CD1.iso
/
Utilitarios
/
Programacao
/
MS-DOS Interrupt List
/
inter60d
/
FARCALL.LST
< prev
next >
Wrap
File List
|
1999-01-03
|
81KB
|
2,176 lines
FAR CALL Interface List Release 60 Last change 03jan99
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
=============================================
>CALL 0000h:0000h - Sample Entry
>Program: description of the program(s) providing the API
>InstallCheck: how to determine CALL address if variable, whether it is
> available if address is fixed
>Note: any notes related to the API
>SeeAlso: related APIs, and interrupt entries for this API in INTERRUP.*
>
>Call entry point with:
> input registers
>Return: result registers
>
>Format of data:
>Offset Size Description
> 00h ... ...
=============================================
--------D-@00600000--------------------------
CALL 0060h:0000h - Eagle MS-DOS v1.25 IO.SYS - INITIALIZE
InstallCheck: MS-DOS v1.25 must be installed
Note: this function should only be called by MSDOS.SYS
SeeAlso: @0060h:0003h,@0060h:0039h
--------D-@00600003--------------------------
CALL 0060h:0003h - Eagle MS-DOS v1.25 IO.SYS - CHECK FOR KEYSTROKE
InstallCheck: MS-DOS v1.25 must be installed
Note: does not return extended keystrokes
SeeAlso: @0060h:0000h,@0060h:0006h,@0060h:0027h
(Table F0001)
Call Eagle MS-DOS entry point 0003h with:
nothing
Return: ZF set if no key
ZF clear if keystroke available
AL = keystroke
--------D-@00600006--------------------------
CALL 0060h:0006h - Eagle MS-DOS v1.25 IO.SYS - WAIT FOR KEYSTROKE
InstallCheck: MS-DOS v1.25 must be installed
Notes: if an extended keystroke is available, only the low byte is returned,
and this function must be called again to get the high byte
the BIOS keycode 0000h (Ctrl-Break) is returned as 00h+FFh to avoid
the ambiguity that might be caused by returning the 00h high byte
SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:0027h
(Table F0002)
Call Eagle MS-DOS entry point 0006h with:
nothing
Return: AL = keystroke
flags modified
--------D-@00600009--------------------------
CALL 0060h:0009h - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHARACTER TO SCREEN
InstallCheck: MS-DOS v1.25 must be installed
Note: this entry point supports most of the ANSI.SYS control sequences,
plus several additional escape sequences
SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:000Ch
(Table F0003)
Call Eagle MS-DOS entry point 0009h with:
AL = character to output
Return: flags modified
--------D-@0060000C--------------------------
CALL 0060h:000Ch - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHARACTER TO PRINTER
InstallCheck: MS-DOS v1.25 must be installed
Note: this entry point is able, if set by configuration (see @0060h:0039h),
to strip linefeed characters following carriage returns
SeeAlso: @0060h:0000h,@0060h:0009h
(Table F0004)
Call Eagle MS-DOS entry point 000Ch with:
AL = character to be printed
Return: flags modified
--------D-@0060000F--------------------------
CALL 0060h:000Fh - Eagle MS-DOS v1.25 IO.SYS - INPUT CHAR FROM AUX: DEVICE
InstallCheck: MS-DOS v1.25 must be installed
Note: if the configured AUX: device is a parallel port, this call always
returns a Ctrl-Z as the "read" character; Ctrl-Z is also returned
if the user presses Esc or Ctrl-Break while waiting for a character
to arrive on a serial port
SeeAlso: @0060h:0000h
(Table F0005)
Call Eagle MS-DOS entry point 000Fh with:
nothing
Return: AL = received character
--------D-@00600012--------------------------
CALL 0060h:0012h - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHAR TO AUX: DEVICE
InstallCheck: MS-DOS v1.25 must be installed
Note: if the port is busy, this function waits until the port becomes
available or the user presses Esc or Ctrl-Break
SeeAlso: @0060h:0000h
(Table F0006)
Call Eagle MS-DOS entry point 0012h with:
AL = character to output
Return: flags modified
--------D-@00600015--------------------------
CALL 0060h:0015h - Eagle MS-DOS v1.25 IO.SYS - READ ABSOLUTE SECTOR(S)
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:0018h,@0060h:001Bh
(Table F0007)
Call Eagle MS-DOS entry point 0015h with:
AL = drive table number
ES:BX -> buffer
CX = number of sectors to read
DX = logical sector number of first sector
AH = verify flag
Return: CF clear if successful
CF set on error
AL = error code
0Ch drive table number out of range
Note: the drive number in AL is *not* the logical DOS drive number, but
the number of an internal data table; multiple data tables, each
describing a distinct disk format, may be shared by one logical
drive
--------D-@00600018--------------------------
CALL 0060h:0018h - Eagle MS-DOS v1.25 IO.SYS - WRITE ABSOLUTE SECTOR(S)
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:0015h,@0060h:001Bh
(Table F0008)
Call Eagle MS-DOS entry point 0018h with:
AL = drive table number
ES:BX -> data to be written
CX = number of sectors to write
DX = logical sector number of first sector
AH = verify flag
Return: CF clear if successful
CF set on error
AL = error code
0Ch drive table number out of range
Note: the drive number in AL is *not* the logical DOS drive number, but
the number of an internal data table; multiple data tables, each
describing a distinct disk format, may be shared by one logical
drive
--------D-@0060001B--------------------------
CALL 0060h:001Bh - Eagle MS-DOS v1.25 IO.SYS - DETERMINE DISK FORMAT
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:0015h,@0060h:002Ah
(Table F0009)
Call Eagle MS-DOS entry point 001Bh with:
AL = DOS drive number
Return: CF clear if successful
AL = drive table number
AH = ??? flag
00h ???
FFh ???
CF set on error
AL = error code
02h ???
0Ch unrecognized format
--------D-@0060001E--------------------------
CALL 0060h:001Eh - Eagle MS-DOS v1.25 IO.SYS - SET DAY COUNT
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:0021h,@0060h:0024h
(Table F0010)
Call Eagle MS-DOS entry point 001Eh with:
AX = day count
Return: nothing
--------D-@00600021--------------------------
CALL 0060h:0021h - Eagle MS-DOS v1.25 IO.SYS - SET SYSTEM TIME
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:001Eh,@0060h:0024h
(Table F0011)
Call Eagle MS-DOS entry point 0021h with:
CH = hours
CL = minutes
DH = seconds
DL = hundredths
Return: flags modified
--------D-@00600024--------------------------
CALL 0060h:0024h - Eagle MS-DOS v1.25 IO.SYS - READ SYSTEM TIME
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:001Eh,@0060h:0021h
(Table F0012)
Call Eagle MS-DOS entry point 0024h with:
nothing
Return: AX = day count
CH = hours
CL = minutes
DH = seconds
DL = hundredths
--------D-@00600027--------------------------
CALL 0060h:0027h - Eagle MS-DOS v1.25 IO.SYS - CLEAR KEYBOARD BUFFER
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:0006h
(Table F0013)
Call Eagle MS-DOS entry point 0027h with:
nothing
Return: ZF set
--------D-@0060002A--------------------------
CALL 0060h:002Ah - Eagle MS-DOS v1.25 IO.SYS - SEARCH FOR NEXT DISK FORMAT
InstallCheck: MS-DOS v1.25 must be installed
SeeAlso: @0060h:0000h,@0060h:001Bh
(Table F0014)
Call Eagle MS-DOS entry point 002Ah with:
AL = drive table number
Return: AL = next drive table number with matching disk sector size and media
ID byte
--------D-@00600039--------------------------
CALL 0060h:0039h - Eagle MS-DOS v1.25 IO.SYS - CONFIGURE FROM SYSINFO.SYS
InstallCheck: MS-DOS v1.25 must be installed
Note: reads the first 144 bytes of SYSINFO.SYS from the current drive into
an internal configuration buffer
SeeAlso: @0060h:0000h
--------V-@C0000003--------------------------
CALL C000h:0003h - VIDEO BIOS INITIALIZATION
InstallCheck: C000h:0000h must contain the word AA55h and the
512*BYTE[C000h:0002h] bytes must sum to 00h (mod 256)
Note: is normally called only by the System ROM BIOS initialization code
--------V-@C0000064--------------------------
CALL C000h:0064h U - ATI Mach32 VIDEO BIOS - ???
InstallCheck: ATI Mach32 video board must be installed
SeeAlso: @C000h:0068h"Mach32",@C000h:006Ch,@C000h:0070h
(Table F0015)
Call ATI Mach32 entry point with:
AL = function
00h ???
01h,02h ???
11h,12h ???
21h,22h ???
41h,42h ???
81h,82h ???
Return: CF clear if successful
CF set on error
--------V-@C0000064--------------------------
CALL C000h:0064h U - ATI Mach64 VIDEO BIOS - ALTERNATE INT 10/AH=A0h (IRET)
InstallCheck: ATI Mach64 video board must be installed
SeeAlso: @C000h:0068h"Mach64",INT 10/AH=A0h"Mach64"
--------V-@C0000068--------------------------
CALL C000h:0068h U - ATI Mach32 VIDEO BIOS - ???
InstallCheck: ATI Mach32 video board must be installed
SeeAlso: @C000h:0064h"Mach32",@C000h:006Ch,@C000h:0070h
(Table F0016)
Call ATI Mach32 entry point with:
AL = ??? (00h-02h)
???
Return: ???
--------V-@C0000068--------------------------
CALL C000h:0068h U - ATI Mach64 VIDEO BIOS - ALTERNATE INT 10/AH=A0h (RETF)
InstallCheck: ATI Mach64 video board must be installed
SeeAlso: @C000h:0064h"Mach64",INT 10/AH=A0h"Mach64"
--------V-@C000006C--------------------------
CALL C000h:006Ch - ATI Mach32 VIDEO BIOS -
InstallCheck: ATI Mach32 video board must be installed
SeeAlso: @C000h:0064h,@C000h:0068h,@C000h:0070h
(Table F0017)
Call ATI Mach32 entry point with:
AL = function
00h get ???
Return: AX = ??? (019Eh)
01h get ??? information
ES:BX -> buffer for ??? information (see #F0018)
Return: buffer filled
02h get ???
Return: AX = ??? (0250h)
BX = ??? (0A00h)
CX = ??? (0200h)
DX = ??? (0003h)
Return: CF clear if successful
CF set if invalid function
all other registers preserved
Note: officially (Programmer's Reference Guide), interrupts should be
disabled (CLI) during a function 01h call
Format of ATI Mach32 ??? information:
Offset Size Description (Table F0018)
00h WORD number of bytes of data returned (0116h for tested BIOS)
02h 2 BYTEs ??? (00h 00h and 00h 05h seen)
04h WORD offset of video mode records??? (0028h)
06h BYTE length of one video mode record??? (22h)
07h BYTE ???
08h BYTE ??? (00h/01h, reflects bit 1 of port 36EEh)
09h BYTE ??? (01h)
0Ah BYTE ???
0Bh BYTE memory size
00h = 256K, 01h = 512K, 02h = 1024K, 03h = 2M, 04h = 4M
0Ch BYTE ???
0Dh BYTE ???
0Eh BYTE ???
0Fh BYTE ??? (bits 6-4 of port 42E8h)
10h BYTE ???
11h BYTE ???
12h BYTE ???
13h BYTE ???
14h WORD ???
16h BYTE ???
17h BYTE ???
18h BYTE ???
19h 14 BYTEs unused
27h BYTE scratch byte used by ROM code
28h 34N BYTEs ??? video mode records (see #F0019)
SeeAlso: #F0017
Format of ATI Mach32 ??? video mode record:
Offset Size Description (Table F0019)
00h WORD horizontal resolution in pixels
02h WORD vertical resolution in pixels
04h 30 BYTEs ???
SeeAlso: #F0018
--------V-@C0000070--------------------------
CALL C000h:0070h U - ATI Mach32 VIDEO BIOS - ???
InstallCheck: ATI Mach32 video board must be installed
SeeAlso: @C000h:0064h,@C000h:0068h,@C000h:006Ch
(Table F0020)
Call ATI Mach32 entry point with:
AH = function
00h ???
01h ???
02h ???
AL = subfunction
00h ???
01h ???
03h ???
AL = ??? (00h/nonzero)
Return: CF clear if successful
CF set on error
--------B-@F000E739--------------------------
CALL F000h:E739h - ROM BIOS INT 14 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000E82E--------------------------
CALL F000h:E82Eh - ROM BIOS INT 16 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000EC59--------------------------
CALL F000h:EC59h - ROM BIOS INT 13 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000EFD2--------------------------
CALL F000h:EFD2h - ROM BIOS INT 17 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000F065--------------------------
CALL F000h:F065h - ROM BIOS INT 10 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000F841--------------------------
CALL F000h:F841h - ROM BIOS INT 12 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000F84D--------------------------
CALL F000h:F84Dh - ROM BIOS INT 11 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000F859--------------------------
CALL F000h:F859h - ROM BIOS INT 15 HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------B-@F000FE6E--------------------------
CALL F000h:FE6Eh - ROM BIOS INT 1A HANDLER
InstallCheck: present if BIOS is 100% compatible with original IBM PC
--------H-@F000FFF0--------------------------
CALL F000h:FFF0h - COLD-BOOT ADDRESS
InstallCheck: always present
SeeAlso: @FFFFh:0000h
--------H-@FFFF0000--------------------------
CALL FFFFh:0000h - COLD-BOOT ADDRESS
InstallCheck: always present
Note: this address is another way of expressing F000h:FFF0h
SeeAlso: @F000h:FFF0h
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - 10NET - 10MEMMGR.SYS
InstallCheck: see INT 21/AX=4402h"10MEMMGR"
SeeAlso: INT 21/AX=4402h"10MEMMGR"
--------t-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Alternate Multiplex Interrupt Specification TSRs
InstallCheck: see INT 2D"AMIS"
SeeAlso: INT 2D"AMIS"
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - AutoCAD Device Interface
InstallCheck: see INT 7A/AX=0001h
SeeAlso: INT 7A/AX=0001h
----------@xxxxxxxx---------------------------
CALL xxxxh:xxxxh - BIOS32 Service Directory
InstallCheck: scan paragraph boundaries E000h to FFFFh for signature string
"_32_", followed by a valid header structure (see #F0021)
Notes: a 32-bit-code alternate PCI BIOS entry point may be found (if
supported) by requesting the entry point for the API with
identifier "$PCI"
an alternate entry point for INT 1A/AH=B4h may be found (if
supported) by requesting the entry point for the API with identifier
"$ACF"
other known identifiers are "$WDS" and "MPTN"
SeeAlso: INT 1A/AX=B100h
Format of BIOS32 Service Directory header structure:
Offset Size Description (Table F0021)
00h 4 BYTEs signature "_32_"
04h DWORD physical address of BSD entry point (see #F0022)
08h BYTE header structure version number (currently 00h)
09h BYTE header structure length in paragraphs (currently 01h)
0Ah BYTE checksum (8-bit sum of all bytes in structure, including this
one, should equal zero)
0Bh 5 BYTEs reserved (0)
(Table F0022)
Call BIOS32 Service Directory entry point with:
EBX = function
00000000h get service entry point
EAX = service identifier
46434124h ("FCA$") Plug-and-Play Auto-Configuration
49435024h ("ICP$") PCI BIOS
4E54504Dh ("NTPM") ??? MPTN [PhoenixBIOS4 Rev. 6.0]
54435724h ("SDW$") ??? WDS$ [PhoenixBIOS4 Rev. 6.0]
Return: AL = status
00h successful
EBX = base address of handler's code seg
ECX = size of code segment
EDX = offset of handler in code seg
80h unknown service identifier
else
Return: AL = 81h invalid function
Notes: the BSD handler assumes that it is running in a 32-bit code segment
the returned entry points for PCI BIOS and Auto-Config must be called
with the same registers as the real-mode INT 1Ah interface,
including the value B1h or B4h in AH (AMI BIOS v1.00.05.AX1 returns
the same entry point for both interfaces and uses AH to distinguish
which API is desired)
some references indicate that only BL is used for the function number,
though at least one implementation actually checks the entire EBX
register; for maximum compatibility, the upper 24 bits of EBX should
be cleared when calling the entry point
SeeAlso: #F0021
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Borland TKERNEL
InstallCheck: see INT 2F/AX=FBA1h/BX=0082h
SeeAlso: INT 2F/AX=FBA1h/BX=0082h
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Buffit v3.0
InstallCheck: see INT 60"Buffit"
SeeAlso: INT 60"Buffit"
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - CEMM v5.10+ Private API
InstallCheck: see INT 21/AX=4402h/SF=00h
SeeAlso: INT 21/AX=4402h/SF=00h
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Cloaking - PROTECTED-MODE API
InstallCheck: see INT 2C/AX=001Dh
SeeAlso: INT 2C/AX=001Dh
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Cloaking - REAL-MODE API
InstallCheck: see INT 2F/AX=4310h"Cloaking"
SeeAlso: INT 2F/AX=4310h"Cloaking"
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - CTMMSYS.SYS - API
Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
driver
InstallCheck: see INT 21/AX=4402h"CTMMSYS"
SeeAlso: INT 21/AX=4402h"CTMMSYS"
--------Q-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DESQview XDI - Driver API
InstallCheck: see INT 2F/AX=DE01h
SeeAlso: INT 2F/AX=DE01h
--------D-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Device Drivers
InstallCheck: see INT 21/AH=52h
SeeAlso: INT 21/AH=52h
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Protected-Mode Interface - MODE SWITCH
InstallCheck: see INT 2F/AX=1687h
SeeAlso: INT 2F/AX=1687h
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Phar Lap RUN286
InstallCheck: see INT 2F/AX=168Ah
SeeAlso: INT 2F/AX=168Ah
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Vendor-Specific APIs
InstallCheck: see INT 31/AX=0A00h
SeeAlso: INT 31/AX=0A00h
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Windows Support
InstallCheck: see INT 2F/AX=168Ah
SeeAlso: INT 2F/AX=168Ah
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Protected-Mode Services
InstallCheck: see INT 2F/AX=43E0h
SeeAlso: INT 2F/AX=43E1h
--------T-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Task Switcher - Callout
InstallCheck: see INT 2F/AX=4B01h
SeeAlso: INT 2F/AX=4B01h
--------T-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - DOS Task Switcher
InstallCheck: see INT 2F/AX=4B02h
SeeAlso: INT 2F/AX=4B02h
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Enhanced Parallel Port (EPP) BIOS
InstallCheck: see INT 17/AX=0200h/BX=5050h
SeeAlso: INT 17/AX=0200h/BX=5050h
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Extended Memory Specification (XMS)
InstallCheck: see INT 2F/AX=4300h
SeeAlso: INT 2F/AX=4310h
--------c-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - FASTOPEN
InstallCheck: see INT 2F/AX=122Ah
SeeAlso: INT 2F/AX=122Ah
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - HIGHUMM.SYS
InstallCheck: see INT 21/AX=4402h"HIGHUMM"
SeeAlso: INT 21/AX=4402h"HIGHUMM"
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - HugeRealMode Driver
InstallCheck: see INT 78/AX=0000h,INT 78/AX=0001h
SeeAlso: INT 78/AX=0001h
--------V-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - IBM 8514/A Adapter Interface (HDILOAD)
InstallCheck: see INT 7F/AX=0105h
SeeAlso: INT 7F/AX=0105h
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - IBM 8516 Touch Screen Device Driver
InstallCheck: see INT 7F/AX=ABCDh
SeeAlso: INT 7F/AX=ABCDh
--------u-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - IBM System 36/38 Workstation Emulation
InstallCheck: see INT 0C"SYSTEM 36/38"
SeeAlso: INT 0C"SYSTEM 36/38"
--------D-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - IFS Drivers
InstallCheck: see INT 21/AH=52h
SeeAlso: INT 21/AH=52h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - IFSHLP.SYS
InstallCheck: see INT 21/AH=3Fh"IFSHLP"
SeeAlso: INT 21/AH=3Fh"IFSHLP"
--------b-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Intel BIOS Upgrade
InstallCheck: scan paragraph boundaries from 0F0000h to 0FFFFFh for signature
string "$IBU" (see #F0023)
SeeAlso: INT 15/AX=D042h/BL=00h
!!! IAL\PROCESSR\PPROBIOS.PDF page 60
Format of Intel BIOS Upgrade header:
Offset Size Description (Table F0023)
00h 4 BYTEs signature "$IBU"
04h BYTE IBU specification version (currently 01h = 1.0)
05h BYTE length of entire header structure in bytes (currently 17h)
06h BYTE checksum (forces 8-bit sum of all header bytes to 00h)
07h DWORD real-mode entry point address
0Bh WORD offset of 16-bit protected mode entry point
0Dh DWORD segment base address of 16-bit protected-mode entry point
11h WORD real-mode data segment address
13h DWORD segment base address of 16-bit protected-mode data segment
Notes: calls from 32-bit protected mode may be made to the 16-bit entry
point, but must ensure that any stack arguments are pushed as
16-bit values instead of 32-bit values
the entry point uses standard C calling conventions to implement
functions prototyped as
int far (*entrypoint)(int function, ...)
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Interrupt Sharing Protocol
InstallCheck: see INT 2D"AMIS"
SeeAlso: INT 2D"AMIS"
--------X-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Intel System Management Bus BIOS
InstallCheck: see INT 15/AX=53B0h/BH=01h,INT 15/AX=53B0h/BH=02h
SeeAlso: INT 15/AX=53B0h/BH=01h,INT 15/AX=53B0h/BH=05h
--------G-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - INTRSPY v1.0 only
InstallCheck: see INT 60"INTRSPY"
SeeAlso: INT 60"INTRSPY"
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Memory Managers
InstallCheck: see INT 21/AX=4402h/SF=00h
SeeAlso: INT 21/AX=4402h/SF=00h
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Microsoft EMM386.EXE
InstallCheck: see INT 67/AX=FFA5h
SeeAlso: INT 67/AX=FFA5h
--------M-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Microsoft Mouse Driver - Alternate Entry Point
InstallCheck: INT 33 must be non-NULL, and must not point at an IRET
instruction; the alternate entry point is located two bytes past
the INT 33 handler
Note: this alternate entry point accepts the same arguments as the
INT 33 interface, but is invoked with a FAR CALL instead of INT 33.
SeeAlso: INT 33/AX=0000h
--------k-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Microsoft Real-Time Compression Interface (MRCI)
InstallCheck: see INT 1A/AX=B001h
SeeAlso: INT 1A/AX=B001h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Microsoft Workgroup Connection - WORKGRP.SYS
InstallCheck: see INT 21/AH=3Fh"WORKGRP.SYS"
SeeAlso: INT 21/AX=4402h"WORKGRP.SYS"
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - DOSMGR Device
InstallCheck: see INT 2F/AX=1684h/BX=0015h
SeeAlso: INT 2F/AX=1684h/BX=0015h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - EDOS Device
InstallCheck: see INT 2F/AX=1684h/BX=2925h
SeeAlso: INT 2F/AX=1684h/BX=2925h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - POSTMSG Device
InstallCheck: see INT 2F/AX=1684h/BX=8888h
SeeAlso: INT 2F/AX=1684h/BX=8888h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - REBOOT Device
InstallCheck: see INT 2F/AX=1684h/BX=0009h
SeeAlso: INT 2F/AX=1684h/BX=0009h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - SHELL Device
InstallCheck: see INT 2F/AX=1684h/BX=0017h
SeeAlso: INT 2F/AX=1684h/BX=0017h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - VADMAD Device
InstallCheck: see INT 2F/AX=1684h/BX=0444h
SeeAlso: INT 2F/AX=1684h/BX=0444h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - VbillD Device
InstallCheck: see INT 2F/AX=1684h/BX=8888h
SeeAlso: INT 2F/AX=1684h/BX=8888h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - VSWITCHD Device
InstallCheck: see INT 2F/AX=1684h/BX=0750h
SeeAlso: INT 2F/AX=1684h/BX=0750h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - VTD Device
InstallCheck: see INT 2F/AX=1684h/BX=0005h
SeeAlso: INT 2F/AX=1684h/BX=0005h
--------W-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - MS Windows - WPS Device
InstallCheck: see INT 2F/AX=1684h/BX=310Eh
SeeAlso: INT 2F/AX=1684h/BX=310Eh
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Netroom RM386 v6.00
InstallCheck: see INT 2F/AX=4310h
SeeAlso: INT 2F/AX=4310h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell - ODI Link Support Layer
InstallCheck: see INT 2F/AX=C000h"LSL.COM"
SeeAlso: INT 2F/AX=C000h"LSL.COM"
--------O-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell DOS 7 DELWATCH.EXE
InstallCheck: see INT 2F/AX=10FEh
SeeAlso: INT 2F/AX=10FEh
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell DOS 7 EMM386.EXE
InstallCheck: see INT 2F/AX=12FFh/BX=0106h
SeeAlso: INT 2F/AX=12FFh/BX=0106h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - Access Server Driver
InstallCheck: see INT 2F/AX=7AF1h
SeeAlso: INT 2F/AX=7AF1h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - DOS Requester
InstallCheck: see INT 2F/AX=7A20h/BX=0000h
SeeAlso: INT 2F/AX=7A20h/BX=0000h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell Netware - Event Service Layer
InstallCheck: see INT 2F/AX=C000h"NESL"
SeeAlso: INT 2F/AX=C000h"NESL"
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - IPX
InstallCheck: see INT 2F/AX=7A00h
SeeAlso: INT 2F/AX=7A00h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - IPXODI
InstallCheck: see INT 2F/AX=7A2Fh
SeeAlso: INT 2F/AX=7A2Fh
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - TCP/IP Protocol Stack
InstallCheck: see INT 2F/AX=7A40h
SeeAlso: INT 2F/AX=7A40h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - VLM
InstallCheck: see INT 2F/AX=7A20h/BX=0000h
SeeAlso: INT 2F/AX=7A20h/BX=0000h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - VLM CallA
InstallCheck: see INT 2F/AX=7A20h/BX=0001h
SeeAlso: INT 2F/AX=7A20h/BX=0001h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - VLM Multicast
InstallCheck: see INT 2F/AX=7A20h/BX=0004h
SeeAlso: INT 2F/AX=7A20h/BX=0004h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - VLM Multiplex
InstallCheck: see INT 2F/AX=7A20h/BX=0002h
SeeAlso: INT 2F/AX=7A20h/BX=0002h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare - VLM Parse API
InstallCheck: see INT 2F/AX=7A20h/BX=0003h
SeeAlso: INT 2F/AX=7A20h/BX=0003h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare Lite - CLIENT
InstallCheck: see INT 2F/AX=D800h
SeeAlso: INT 2F/AX=D800h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare Lite - NLCACHE/NWCACHE
InstallCheck: see INT 2F/AX=D8C0h
SeeAlso: INT 2F/AX=D8C0h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Novell NetWare Lite - SERVER
InstallCheck: see INT 2F/AX=D880h
SeeAlso: INT 2F/AX=D880h
--------R-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - pcANYWHERE IV/LAN
InstallCheck: see INT 21/AX=2B44h/BX=4D41h
SeeAlso: INT 21/AX=2B44h/BX=4D41h
--------X-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - PCI BIOS v2.0c Protected-Mode API
InstallCheck: see INT 1A/AX=B101h
SeeAlso: INT 1A/AX=B101h
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - PenDOS PENDEV.SYS
InstallCheck: see INT 21/AX=4402h"PENDEV"
SeeAlso: INT 21/AX=4402h"PENDEV"
--------E-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Phar Lap 386/DOS-Extender v4.1
InstallCheck: see INT 2F/AX=ED03h
SeeAlso: INT 2F/AX=ED03h
--------X-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Plug-and-Play BIOS v1.0A
InstallCheck: scan paragraph boundaries F000h to FFFFh for signature string
"$PnP" followed by a valid Plug-and-Play header structure
(see #F0024)
SeeAlso: @xxxxh:xxxxh"BIOS32 Service Directory",INT 1A/AH=B4h
Format of Plug-and-Play Installation Structure:
Offset Size Description (Table F0024)
00h 4 BYTEs signature "$PnP"
04h BYTE Plug-and-Play version (major in high nybble, BCD minor in low)
10h for current specification
05h BYTE length of Installation Structure in bytes
06h WORD control field
bits 15-2 reserved
bits 1-0: event notification mechanism
00 not supported
01 polling
10 asynchronous (interrupt time)
08h BYTE checksum (8-bit sum of all bytes in structure, including this
one, should equal zero)
09h DWORD physical address of event notification flag if using polling
(bit 0 set when a system even occurs)
0Dh WORD real mode entry offset (see #F0025)
0Fh WORD real mode code segment
11h WORD 16-bit protected mode entry point offset (see #F0025)
13h DWORD 16-bit protected mode code segment base address
17h DWORD OEM device identifier
1Bh WORD real mode data segment
1Dh DWORD 16-bit protected mode data segment base address
(Table F0025)
Call Plug-and-Play BIOS entry point with:
STACK: WORD function number
0000h Get Number of System Device Nodes (see #F0026)
0001h Get System Device Node (see #F0027)
0002h Set System Device Node (see #F0028)
0003h Get Event (see #F0029)
0004h Send Message (see #F0031)
0005h Get Docking Station Information (see #F0033)
0006h reserved for future versions
0007h Select Primary Boot Devices (see #F0034)
0008h Get Primary Boot Devices (see #F0035)
0009h Set Statically Allocated Resource Information
(see #F0037)
000Ah Get Statically Allocated Resource Information
(see #F0038)
000Bh Get APM ID Table (see #F0039)
0040h Get Plug-and-Play ISA Configuration Structure
(see #F0041)
0041h Get Extended System Configuration Data Info
(see #F0043)
0042h Read Extended SYstem Configuration Data
(see #F0044)
0043h Write Extended SYstem Configuration Data
(see #F0045)
---Desktop Management Interface v2.0+---
0050h Get DMI Information (see #F0046)
0051h Get DMI structure (see #F0047)
---SMBIOS v2.1+ (formerly Desktop Management I'face---
0052h Set DMI structure (see #F0048)
0053h Get DMI structure-change information (see #F0051)
0054h SMBIOS control (see #F0053)
0055h Get GP Non-Volatile Storage info (see #F0056)
0056h Read GP Non-Volatile Storage data (see #F0057)
0057h Write GP Non-Volatile Storage data (see #F0058)
0058h-005Fh reserved for future use
---BIOS Boot Specification---
0060h Get Version and Installation Check (see #F0074)
0061h Get IPL Device Count (see #F0075)
0062h Get Boot Priority and IPL Table (see #F0076)
0063h Set Boot Priority (see #F0077)
0064h Get IPL Device from Last Boot (see #F0078)
0065h Get Boot First (see #F0079)
0066h Set Boot First (see #F0080)
0067h-006Fh reserved
var function arguments
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the caller must provide at least 1024 bytes of stack space for use by
the Plug-and-Play BIOS
this API is bi-modal; all calls are available in both real mode and
16-bit protected mode (if calling from 32-bit protected mode, care
must be taken to ensure proper alignment of the stack arguments)
SeeAlso: #F0024
(Table F0026)
Call Plug-and-Play BIOS function 00h with:
STACK: WORD 0000h (function "Get Number of System Device Nodes")
DWORD -> BYTE in which to return number of device nodes
DWORD -> WORD in which to return size of largest device node
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int *, unsigned int);
(Table F0027)
Call Plug-and-Play BIOS function 01h with:
STACK: WORD 0001h (function "Get System Device Node")
DWORD -> BYTE containing node number or handle
DWORD -> buffer for device node
WORD control flag
bits 15-2 reserved (0)
bit 1: get static config (values for next boot)
bit 0: get current (dynamic) configuration
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, DEV_NODE *, unsigned int,
unsigned int);
exactly one of the two defined bits in the control flag must be set
(Table F0028)
Call Plug-and-Play BIOS function 02h with:
STACK: WORD 0002h (function "Set System Device Node")
DWORD -> BYTE containing node number or handle
DWORD -> buffer containing device node
WORD control flag
bits 15-2 reserved (0)
bit 1: set static config (values for next boot)
bit 0: set current (dynamic) configuration
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, DEV_NODE *, unsigned int,
unsigned int);
exactly one of the two defined bits in the control flag must be set
(Table F0029)
Call Plug-and-Play BIOS function 03h with:
STACK: WORD 0003h (function "Get Event")
DWORD -> WORD buffer for event message identifier (see #F0030)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned int *, unsigned int);
(Table F0030)
Values for PnP Event Identifier:
0001h "ABOUT_TO_CHANGE_CONFIG" preliminary notification of changes, including
docking and undocking
0002h "DOCK_CHANGED" devices have been added to or removed from system
0003h "SYSTEM_DEVICE_CHANGED" removable system devices have been inserted
or removed
0004h "CONFIG_CHANGE_FAILED" error detected while atempting to add or remove
devices
8000h-FFFEh OEM-defined events
FFFFh "UNKNOWN_SYSTEM_EVENT"
(Table F0031)
Call Plug-and-Play BIOS function 04h with:
STACK: WORD 0004h (function "Send Message")
WORD message identifier (see #F0032)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned int, unsigned int);
SeeAlso: #F0031,#F0033
(Table F0032)
Values for PnP Message Identifier:
0000h "OK"
0001h "ABORT" action which caused an ABOUT_TO_X message
0002h-003Fh reserved for future Response Messages
0040h "UNDOCK_DEFAULT_ACTION"
0041h "POWER_OFF"
0042h "PNP_OS_ACTIVE"
0043h "PNP_OS_INACTIVE"
0044h-007Fh reserved for future Control Messages
8000h-FFFFh OEM-defined messages
(Table F0033)
Call Plug-and-Play BIOS function 05h with:
STACK: WORD 0005h (function "Get Docking Station Information")
DWORD -> buffer for docking station info (see #F0036)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int);
SeeAlso: #F0031,#F0034
(Table F0034)
Call Plug-and-Play BIOS function 07h with:
STACK: WORD 0007h (function "Select Primary Boot Devices")
WORD type of primary boot device
0000h primary input
0001h primary output
0002h primary IPL
DWORD Plug-and-Play 32-bit device ID or FFFFFFFFh for ISA
DWORD device serial number or FFFFFFFFh
DWORD 32-bit logical device ID or FFFFFFFFh for ISA device
WORD physical unit number
WORD control flag
bits 15-1 reserved (0)
bit 0: do not check for attached device during PnP POST
boot device selection
DWORD -> preferred resource allocation or -> END_TAG if none
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, int, unsigned long, unsigned long, unsigned long,
int, int, char *, unsigned int);
(Table F0035)
Call Plug-and-Play BIOS function 08h with:
STACK: WORD 0008h (function "Get Primary Boot Devices")
WORD type of primary boot device
0000h primary input
0001h primary output
0002h primary IPL
DWORD -> DWORD buffer for Plug-and-Play 32-bit device ID
DWORD -> DWORD buffer for device serial number
DWORD -> DWORD buffer for logical device ID
DWORD -> WORD buffer for physical unit number
DWORD -> buffer for preferred resource allocation
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, int, unsigned long *, unsigned long *,
unsigned long *, unsigned int *, char *, unsigned int);
Format of Plug-and-Play Docking Station Information:
Offset Size Description (Table F0036)
00h DWORD docking station location identifier (EISA device ID format)
FFFFFFFFh if unknown or no product identifier
04h DWORD serial number or 00000000h
08h WORD capabilities
bits 15-3 reserved (0)
bits 2-1: hot-pluggability
00 power-down required to dock/undock
01 must be in suspend mode ("warm" dock/undock)
10 system can be hot-docked
11 reserved
bit 0: docking station provides support for controlling
sequence of docking/undocking
(Table F0037)
Call Plug-and-Play BIOS function 09h with:
STACK: WORD 0009h (function "Set Statically Allocated Resource
Information")
DWORD -> block of statically-allocated resources as described
in the Plug-and-Play ISA Spec
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int);
if the returned status is 008Dh, the Plug-and-Play BIOS supports
ESCD, and the caller should thus use functions 41h to 43h instead
of 09h and 0Ah
(Table F0038)
Call Plug-and-Play BIOS function 0Ah with:
STACK: WORD 000Ah (function "Get Statically Allocated Resource
Information")
DWORD -> buffer for statically-allocated resources as
described in the Plug-and-Play ISA Spec
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int);
if the returned status is 008Dh, the Plug-and-Play BIOS supports
ESCD, and the caller should thus use functions 41h to 43h instead
of 09h and 0Ah
(Table F0039)
Call Plug-and-Play BIOS function 0Bh with:
STACK: WORD 000Bh (function "Get APM ID Table")
Information")
DWORD -> WORD buffer for size of data buffer
DWORD -> buffer for storing APM ID table (see #F0040)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Desc: copies the Advanced Power Management v1.1 device identifier table to
Plug-and-Play device identifier mappings
Note: the large-model C declaration is
int (*entry)(int, unsigned int *, unsigned char *, unsigned int);
SeeAlso: INT 15/AX=5300h
Format of Plug-and-Play APM ID Table:
Offset Size Description (Table F0040)
00h DWORD Plug-and-Play device identifier
04h WORD APM v1.1+ identifier
SeeAlso: #F0039
(Table F0041)
Call Plug-and-Play BIOS function 40h with:
STACK: WORD 0040h (function "Get Plug-and-Play ISA Configuration
Structure")
DWORD -> buffer for configuration structure (see #F0042)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int);
Format of Plug-and-Play ISA Configuration Structure:
Offset Size Description (Table F0042)
00h BYTE structure revision level (01h)
01h BYTE total Card Select Numbers (CSNs) assigned
02h WORD ISA Read Data Port (see also PORT 0A79h)
04h WORD reserved (0)
SeeAlso: #F0041
(Table F0043)
Call Plug-and-Play BIOS function 41h with:
STACK: WORD 0041h (function "Get Extended System Configuration
Information")
DWORD -> WORD buffer for size of nonvolatile storage
DWORD -> WORD buffer for size of ESCD allocated
DWORD -> DWORD buffer for physical base address of NV storage
(if memory-mapped, else 00000000h)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned int *, unsigned int *, unsigned long *,
unsigned int);
SeeAlso: INT 1A/AX=B401h
(Table F0044)
Call Plug-and-Play BIOS function 42h with:
STACK: WORD 0042h (function "Read Extended System Configuration
Data")
DWORD -> buffer for storing ESCD
WORD read/writable selector for ESCD if memory-mapped and
called in protected mode (ignored otherwise)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int, unsigned int);
if an ESCD selector is required, the caller must construct a 16-bit
data segment selector with a limit of 64K
(Table F0045)
Call Plug-and-Play BIOS function 43h with:
STACK: WORD 0043h (function "Write Extended System Configuration
Data")
DWORD -> buffer containing ESCD
WORD read/writable selector for ESCD if memory-mapped and
called in protected mode (ignored otherwise)
WORD PnP BIOS writable segment/selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned int, unsigned int);
if an ESCD selector is required, the caller must construct a 16-bit
data segment selector with a limit of 64K
(Table F0046)
Call Desktop Management Specification function 50h with:
STACK: WORD 0050h (function "Get DMI Information")
DWORD -> buffer for ASCIZ DMI BIOS revision string
DWORD -> WORD to receive number of DMI structures
DWORD -> WORD to receive size of largest DMI structure
DWORD -> DWORD to receive DMI storage base address
DWORD -> WORD to receive DMI storage size
WORD BIOS selector
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
short (*entry)(int, unsigned char *, unsigned short *,
unsigned short *, unsigned long *, unsigned short *,
unsigned short) ;
the BIOS may return a structure size larger than the actual largest
DMI structure to permit dynamic information
this function is available in both real mode and 16-bit protected mode
SeeAlso: #F0047
(Table F0047)
Call Desktop Management Specification function 51h with:
STACK: WORD 0051h (function "Get DMI Structure")
DWORD -> WORD number/handle of structure to retrieve
DWORD -> buffer for DMI structure
WORD DMI read/write data selector
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
Notes: the large-model c declaration is
short (*entry)(int, unsigned short *,unsigned char *, unsigned short,
unsigned short) ;
structure number 0000h will return the first SMBIOS structure; the
variable is updated with the number of the next structure after each
successful call, returning FFFFh if the last structure has been
returned
this function is available in both real mode and 16-bit protected mode
SeeAlso: #F0046,#F0048
(Table F0048)
Call System Management BIOS function 52h with:
STACK: WORD 0052h (function "Set DMI Structure")
DWORD -> buffer containing new data (see #F0049)
DWORD -> BIOS work buffer
BYTE control flags
bit 0: set structure instead of just validating
bits 7-1: reserved (0)
BYTE padding
WORD DMI read/write data selector
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
SeeAlso: #F0025,#F0047,#F0051
Format of DMI data buffer for SMBIOS function 52h:
Offset Size Description (Table F0049)
00h BYTE operation to perform (see #F0050)
01h BYTE offset within fixed data of the structure for the to-be-
changed item
02h DWORD change mask for BYTE/WORD/DWORD change operation
this value is ANDed with the existing data prior to
applying the change value given below
06h DWORD change value for BYTE/WORD/DWORD change operation
this value is ORed with the result of applying the
change mask above to the existing data
0Ah WORD data length for structure-add, string-change, block-change
for a string-change command, this field specifies the
length of the string including the NUL terminator; if
the length is 1 (empty string), the string is removed
if the applicable access rights are met
0Ch 4 BYTEs structure header of structure to be changed/added/removed
(see also #F0059)
10h var new structure data for structure-add or block-change cmd
new string data for string-change command
SeeAlso: #F0048,#F0059
(Table F0050)
Values for SMBIOS structure-change operation:
00h change a single byte in the identified structure
01h change a word (two bytes) in the identified structure
02h change a DWORD (four byets) in the identified structure
03h add the identified structure to the SMBIOS structure pool
04h remove the identified structure from the SMBIOS structure pool
05h change a string in the identified structure
06h change a block of data in the identified structure
07h-FFh reserved for future revisions of specification
SeeAlso: #F0049
(Table F0051)
Call System Management BIOS function 53h with:
STACK: WORD 0053h (function "Get Structure Change Information")
DWORD -> SMBIOS change structure (see #F0052)
WORD DMI read/write data selector
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
SeeAlso: #F0025,#F0048,#F0053
Format of SMBIOS change structure:
Offset Size Description (Table F0052)
00h BYTE change status
00h no change
01h other
02h unknown
03h single SMBIOS structure affected
04h multiple SMBIOS structures affected
other reserved
01h BYTE change type
bits 7-2 reserved (0)
bit 1: structure(s) added
bit 0: structure(s) changed
02h WORD structure handle (if change status == 03h)
04h 12 BYTEs reserved (0)
Note: if multiple structures changed, all of the SMBIOS structures must be
enumerated to determine what changed
SeeAlso: #F0051
(Table F0053)
Call System Management BIOS function 54h with:
STACK: WORD 0054h (function "SMBIOS Control")
WORD subfunction (see #F0054)
DWORD -> data
BYTE control flags
bits 7-1: reserved (0)
bit 0: perform the operation instead of just validating
parameters
BYTE padding
WORD DMI read/write data selector
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
SeeAlso: #F0025,#F0051,#F0056
(Table F0054)
Values for SMBIOS function 54h subfunction:
0000h clear event log
data parameter must be 00000000h
0001h control event logging
data parameter points at 2-WORD buffer containing AND-mask and
OR-mask for modifying logging values; on return, the second word will
contain the prior value of the control flags (see #F0055)
0002h (v2.1+) clear event log (Type 15)
data parameter is 32-bit physical address of a scratch buffer for use
by the BIOS, which must be writeable and at least as large as the
largest-structure size reported by function 50h
0003h-3FFFh reserved for future revisions of specification
4000h-7FFFh reserved for BIOS vendor
8000h-FFFFh reserved for system vendor
SeeAlso: #F0053
Bitfields for SMBIOS event logging control word:
Bit(s) Description (Table F0055)
15-3 reserved for future use (0)
2 disable logging of POST errors
1 enable logging of correctable memory errors
0 enable overall event logging
SeeAlso: #F0054
(Table F0056)
Call System Management BIOS function 55h with:
STACK: WORD 0055h (function "Get General-Purpose NonVolatile Info")
DWORD -> WORD GPNV handle (set to 0000h for first call)
DWORD -> WORD (ret) minimum buffer size (in bytes)
DWORD -> WORD (ret) size allocated for this GPNV
DWORD -> DWORD (ret) physical base address for memory-mapped
non-volatile storage (00000000h if PMode
mapping not required)
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
GPNV handle var set to handle of next GPNV area or FFFFh if no more
SeeAlso: #F0025,#F0053,#F0057
(Table F0057)
Call System Management BIOS function 56h with:
STACK: WORD 0056h (func "Read General-Purpose NonVolatile Data")
WORD GPNV handle for area to be read
DWORD -> buffer for GPNV data (must be large enough to hold
entire area - use "min buffer size" from func 55h)
DWORD -> WORD lock value or FFFFh to ignore
WORD GPNV storage selector
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
lock value set to value of the current lock if it was not FFFFh on
entry and locking is supported
SeeAlso: #F0025,#F0056,#F0058
(Table F0058)
Call System Management BIOS function 57h with:
STACK: WORD 0057h (func "Write General-Purpose NonVolatile Data")
WORD GPNV handle for area to be written
DWORD -> buffer containing GPNV data
WORD lock value (must match value set by prior read) or
FFFFh for a forced write
WORD GPNV storage selector
WORD PnP BIOS read/write selector
Return: AX = status (see #F0081)
SeeAlso: #F0025,#F0057
Format of SMBIOS data structure:
Offset Size Description (Table F0059)
00h 4 BYTEs structure header
BYTE structure type (see #F0060)
80h-FFh available for system/OEM-specific data
BYTE length of formatted data, including header
WORD structure handle (a unique value 0000h-FEFFh [v2.0 allows
up to FFFEh])
handles FF00h-FFFFh are reserved for use by the SMBIOS
specification
handles need not be contiguous -- a handle might not
exist any more after a configuration change, but the
BIOS may not re-assign that handle number to another
structure
---type 00h---
04h BYTE string number of the vendor name (string numbers are 1-based)
05h BYTE string number of the version string (00h if not present)
06h WORD starting segment of runtime BIOS
08h BYTE string number of BIOS release date
09h BYTE size of BIOS ROM (stored as one less than number of 64K units)
0Ah QWORD BIOS characteristics (see #F0061)
12h var optional space for BIOS characteristics extension
(see #F0062,#F0063)
(size of optional space is implied by header's length field)
var var free-form ASCIZ strings (max 64 bytes per string)
---type 01h---
04h BYTE string number of manufacturer name
05h BYTE string number of product name
06h BYTE string number of version number
07h BYTE string number of serial number
08h 16 BYTEs (v2.1+) universal unique ID number (UUID)
all-FFh if not currently set
all-00h if not present
18h BYTE (v2.1+) type of last wake-up event (see #F0064)
---type 02h---
04h BYTE string number of manufacturer name
05h BYTE string number of product name
06h BYTE string number of version number
07h BYTE string number of serial number
---type 03h---
04h BYTE string number of manufacturer name
05h BYTE chassis type
bit 7: chassis lock present
bits 6-0: (see #F0065)
06h BYTE string number of version number
07h BYTE string number of serial number
08h BYTE string number of asset tag number
09h BYTE (v2.1+) enclosure state at last boot (see #F0066)
0Ah BYTE (v2.1+) power supply state at last boot
0Bh BYTE (v2.1+) thermal state at last boot
0Ch BYTE (v2.1+) physical security status at last boot (see #F0067)
0Dh DWORD (v2.3+) OEM/BIOS-specific information
---type 04h---
04h BYTE string number of socket designation
05h BYTE processor type (see #F0068)
06h BYTE processor family (see #F0069)
07h BYTE string number of processor manufacturer
08h QWORD processor identification data (see #F0070)
10h BYTE string number of processor version string
11h BYTE voltage (see #F0071)
12h WORD external clock frequency in MHz (0000h if unknown)
14h WORD maximum internal processor speed in MHz (0000h if unknown)
16h WORD current internal processor speed in MHz (0000h if unknown)
18h BYTE processor status (see #F0072)
19h BYTE processor upgrade (see #F0073)
1Ah WORD (v2.1+) handle of L1 cache information structure, or FFFFh
1Ch WORD (v2.1+) handle of L2 cache information structure, or FFFFh
1Eh WORD (v2.1+) handle of L3 cache information structure, or FFFFh
---type 05h---
04h BYTE error-detection method
05h BYTE error-correction capability
06h BYTE supported memory interleave
07h BYTE current memory interleave
08h BYTE maximum memory module size (00h=1M, 01h=2M, 02h=4M, etc.)
09h WORD supported memory speeds
0Bh WORD supported memory types
0Dh BYTE voltages supported by memory modules
bits 7-3: reserved (0)
bit 2: 2.9V
bit 1: 3.3V
bit 0: 5.0V
0Eh BYTE number of memory slots
0Fh N WORDs handles of memory information structures for each slot
BYTE (v2.1+) enabled error-correction capabilities
!!!ftp://download.intel.com/ial/wfm/smbios.pdf p.39
---type 06h---
04h BYTE string number for socket designation
05h BYTE bank connections
06h BYTE current memory speed in ns (00h = unknown)
07h WORD current memory type
09h BYTE installed size
0Ah BYTE enabled size
0Bh BYTE error status
bits 7-3: reserved (0)
bit 2: get error status info from event log (bits 1-0 reserved)
bit 1: correctable errors encountered
bit 0: uncorrectable errors encountered, some or all of module
disabled
---type 07h---
04h BYTE string number of socket designation
05h WORD cache configuration
07h WORD maximum cache size
09h WORD installed cache size
0Bh WORD supported SRAM type(s)
0Dh WORD current SRAM type
0Fh BYTE (v2.1+) cache speed in ns (00h = unknown)
10h BYTE (v2.1+) error correction type
11h BYTE (v2.1+) system cache type
12h BYTE (v2.1+) cache associativity
---type 08h---
------
var WORD 0000h end-of-structure marker
(if strings are present, only a single byte of 00h is needed,
because the terminating NUL of the last string forms the
first byte of the end-of-structure marker)
Note: structures can have new fields added in successive revisions of the
SMBIOS specification, so applications should use the actual length
field given in the SMBIOS structure; as of SMBIOS v2.3, structure
types also have a minimum length to enable the addition of optional
fields
SeeAlso: #F0049
(Table F0060)
Values for SMBIOS structure type:
00h BIOS Information
01h System Information
02h Motherboard Information
03h system enclosure/chassis information
04h processor information
05h memory controller information
06h memory module information
07h cache information
08h port connector information
09h system slots
0Ah on-board devices
0Dh BIOS language
0Eh group associations
0Fh system event log
10h physical memory array
11h memory device information
12h memory error information
13h memory array mapped addresses
14h memory device mapped addresses
15h built-in pointing device information
16h portable battery
17h (v2.2+) system reset
18h (v2.2+) hardware security
19h (v2.2+) system power controls
1Ah (v2.2+) voltage probe
1Bh (v2.2+) cooling device
1Ch (v2.2+) temperature probe
1Dh (v2.2+) electrical current probe
1Eh (v2.2+) out-of-band remote access
1Fh (v2.3+) Boot Integrity Services (BIS) entry point
20h (v2.3+) system boot information
21h (v2.3+) 64-bit memory error information
22h (v2.3+) management device attributes
23h (v2.3+) management device component
24h (v2.3+) management device threshold information
7Eh inactive structure
7Fh end of structure table indicator
SeeAlso: #F0059
Bitfields for SMBIOS BIOS characteristics:
Bit(s) Description (Table F0061)
63-48 reserved for system vendor
47-32 reserved for BIOS vendor
31 NEC PC-98
30 supports INT 10 CGA/Mono video services
29 supports INT 17 printer services
28 supports INT 14 serial services
27 supports INT 09 and 8042 keyboard services
26 supports INT 05 print-screen
25 supports INT 13 3.5-inch/2.88M floppy services
24 supports INT 13 3.5-inch/720K floppy services
23 supports INT 13 5.25-inch/1.2M floppy services
22 supports INT 13 5.25-inch/360K floppy services
21 supports INT 13 for Japanese Toshiba 1.2M floppy (3.5-inch, 360rpm)
20 supports INT 13 for Japanese NEC 9800 1.2M floppy (3.5-inch, 1024-byte
sectors, 360rpm)
19 supports Enhanced Disk Drive specification
18 supports booting from PC Card (PCMCIA)
17 BIOS ROM is socketed
16 supports selectable boot
15 supports booting from CD-ROM
14 ESCD support is available
13 supports VL-VESA
12 allows BIOS shadowing
11 upgradeable (Flash) BIOS
10 supports APM
9 supports Plug-and-Play
8 supports PC Card (PCMCIA)
7 supports PCI
6 supports EISA
5 supports MCA
4 supports ISA
3 BIOS characteristics not supported
2 characteristics unknown
1-0 reserved
SeeAlso: #F0059,#F0062,#F0063
Bitfields for SMBIOS v2.1+ BIOS characteristics extension byte 1:
Bit(s) Description (Table F0062)
7 Smart Battery supported
6 supports booting from IEEE 1394 device
5 supports booting from ATAPI ZIP drive
4 supports booting from LS-120
3 supports booting from I2O device
2 supports AGP
1 supports legacy USB
0 supports ACPI
SeeAlso: #F0059,#F0061,#F0063
Bitfields for SMBIOS v2.3+ BIOS characteristics extension byte 2:
Bit(s) Description (Table F0063)
7-1 reserved for future versions
0 supports BIOS Boot Specification (see #F0074)
SeeAlso: #F0059,#F0061,#F0062
(Table F0064)
Values for SMBIOS wake-up type:
00h reserved
01h other
02h unknown wake-up method
03h APM timer
04h modem ring
05h LAN remote
06h power switch
07h PCI PME#
08h AC power restored
SeeAlso: #F0059
(Table F0065)
Values for SMBIOS Chassis Type:
01h other
02h chassis type not known
03h desktop
04h low-profile desktop
05h pizza box
06h mini tower
07h full tower
08h portable
09h laptop
0Ah notebook
0Bh handheld
0Ch docking station
0Dh all-in-one
0Eh sub-notebook
0Fh space-saving
10h lunch box
11h main server chassis
12h expansion chassis
13h subchassis
14h bus-expansion chassis
15h peripheral chassis
16h RAID chassis
17h rack-mount
18h sealed-case PC
SeeAlso: #F0059,#F0066,#F0067
(Table F0066)
Values for SMBIOS system enclosure/chassis state:
01h other
02h state not known
03h safe
04h warning
05h critical
06h non-recoverable
SeeAlso: #F0059,#F0065,#F0067
(Table F0067)
Values for SMBIOS system enclosure/chassis security status:
01h other
02h not known
03h none
04h external interface locked out
05h external interface enabled
SeeAlso: #F0059,#F0065,#F0066
(Table F0068)
Values for SMBIOS processor type:
01h other
02h unknown processor type
03h central processor
04h math processor
05h digital signal processor (DSP)
06h video processor
SeeAlso: #F0059,#F0069,#F0070,#F0071
(Table F0069)
Values for SMBIOS processor family:
01h other
02h unknown processor family
03h 8086
04h 80286
05h 80386
06h 80486
07h 8087
08h 80287
09h 80387
0Ah 80487
0Bh Pentium
0Ch Pentium Pro
0Dh Pentium II
0Eh Pentium-MMX
0Fh Celeron
10h Pentium II-Xeon
11h reserved for future Pentium (probably Pentium III)
12h Cyrix M1 family
13h-18h reserved for future M1 versions
19h AMD K5 family
1Ah-1Fh reserved for future K5 versions
20h PowerPC family
21h PowerPC 601
22h PowerPC 603
23h PowerPC 603+
24h PowerPC 604
30h DEC Alpha family (Pentium Pro for some v2.0 implementations)
40h MIPS family
50h Sun SPARC family
60h Motorola 68040 family
61h 68xxx
62h 68000
63h 68010
64h 68020
65h 68030
70h Hobbit family
80h Weitek
90h Hewlett-Packard PA-RISC family
A0h NEC V30 family
B0h
SeeAlso: #F0059,#F0068
Bitfields for SMBIOS processor identification data:
Bit(s) Description (Table F0070)
---x86 supporting CPUID---
63-32 EDX returned by CPUID with EAX=1
31-0 EAX returned by CPUID with EAX=1
---x86 not supporting CPUID---
63-16 reserved
15-0 contents of DX at CPU reset
SeeAlso: #F0059,#F0068
Bitfields for SMBIOS processor voltage:
Bit(s) Description (Table F0071)
7 =0 legacy mode
=1 new mode
---bit7=0---
6-3 reserved (0)
2 supports 2.9V
1 supports 3.3V
0 supports 5.0V
---bit7=1---
6-0 current CPU voltage * 10 (12h = 1.8V)
SeeAlso: #F0059,#F0068,#F0072
Bitfields for SMBIOS processor status:
Bit(s) Description (Table F0072)
7 reserved (0)
6 CPU socket is populated
5-3 reserved (0)
2-0 CPU status
000 unknown
001 CPU enabled
010 CPU disabled by user (via BIOS setup)
011 CPU disabled by BIOS (POST error)
100 CPU idle
101 reserved
110 reserved
111 other
SeeAlso: #F0059,#F0068,#F0071
(Table F0073)
Values for SMBIOS processor upgrade:
01h other
02h unknown processor upgrade
03h daughter board
04h ZIF socket
05h replaceable piggyback
06h none
07h LIF socket
08h Slot 1
09h Slot 2
SeeAlso: #F0059,#F0068
(Table F0074)
Call BIOS Boot Specification function 60h with:
STACK: WORD 0060h (function "Get Version and Installation Check")
DWORD -> WORD buffer for BIOS Boot Spec version number (BCD)
Return: AX = status (see #F0081)
0081h if BIOS Boot not available
Note: the large-model C declaration is
int (*entry)(int, int *) ;
SeeAlso: #F0075,#F0076,#F0077,#F0078
(Table F0075)
Call BIOS Boot Specification function 61h "Get IPL Device Count" with:
STACK: WORD 0061h (function "Get IPL Device Count")
DWORD -> WORD buffer for number of IPL devices in system
DWORD -> WORD buffer for max. number of IPL devices supported
DWORD -> WORD buffer for size of an IPL table entry
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned int *, unsigned int *, unsigned int *) ;
SeeAlso: #F0074,#F0076,#F0077,#F0078
(Table F0076)
Call BIOS Boot Specification function 62h with:
STACK: WORD 0062h (function "Get Boot Priority and IPL Table")
DWORD -> buffer for copy of boot priority stored in NVRAM
DWORD -> buffer for IPL table
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned char *, unsigned char *) ;
the size of the boot priority buffer must be at least MaxIPL bytes
(see #F0075), of which the first CurrentIPL bytes are valid, with
the lowest-valued byte indicating the device which should attempt
booting first, the next lowest second, etc.
the size of the IPL table buffer must be at least MaxIPL + IPLsize
bytes (see #F0075)
SeeAlso: #F0074,#F0075,#F0077,#F0078
(Table F0077)
Call BIOS Boot Specification function 63h "Set Boot Priority" with:
STACK: WORD 0063h (function "Set Boot Priority")
DWORD -> buffer containing new boot priority list (see #F0076)
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned char *) ;
SeeAlso: #F0074,#F0075,#F0076,#F0078
(Table F0078)
Call BIOS Boot Specification function 64h with:
STACK: WORD 0064h (function "Get IPL Device from Last Boot")
DWORD -> WORD buffer for index in IPL table of boot device
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int, unsigned int *) ;
SeeAlso: #F0074,#F0075,#F0076,#F0077,#F0079
(Table F0079)
Call BIOS Boot Specification function 65h "Get Boot First" with:
STACK: WORD 0065h (function "Get Boot First")
DWORD -> WORD buffer for index in IPL table of current
first boot device
Return: AX = status (see #F0081)
Notes: the large-model C declaration is
int (*entry)(int, unsigned int *) ;
the boot-first device will attempt booting before the boot-priority
list is considered
SeeAlso: #F0074,#F0075,#F0076,#F0077,#F0080
(Table F0080)
Call BIOS Boot Specification function 66h "Set Boot First" with:
STACK: WORD 0066h (function "Set Boot First")
DWORD -> WORD containing index in IPL table of new device
from which to attempt booting first before
considering the boot priority list
Return: AX = status (see #F0081)
Note: the large-model C declaration is
int (*entry)(int,
SeeAlso: #F0074,#F0075,#F0076,#F0077,#F0079
(Table F0081)
Values for Plug-and-Play function status code:
0000h successful
0001h boot device resource configuration not saved to nonvolatile memory
0002h-007Eh reserved for future warnings
0055h unable to read/write Extended System Config Data from nonvolatile mem
0056h no valid Extended System Configuration Data in nonvolatile storage
0059h user's buffer was too small for Extended System Configuration Data
007Fh device could not be configured statically, but dynamic config succeeded
0081h unknown function
0082h unsupported function
0083h invalid device node (or DMI structure) number/handle
0084h bad parameter
0085h failure setting device node
invalid DMI/SMBIOS subfunction
0086h no pending events
0087h system not docked
(SMBIOS) out of space to add data
0088h no ISA Plug-and-Play cards installed
0089h unable to determine docking station's capabilities
008Ah undocking sequence failed because system unit does not have a battery
008Bh resource conflict with a primary boot device
008Ch buffer provided by user was too small
008Dh must use ESCD support for specified device
(SMBIOS) "set" request failed (one or more fields read-only)
008Eh message not supported
008Fh hardware error
---SMBIOS v2.1+ ---
0090h locking not supported for the GPNV handle
0091h GPNV already locked
0092h invalid GPNV lock value
SeeAlso: #01243
Format of Option ROM header:
Offset Size Description (Table F0082)
00h WORD AA55h signature
02h BYTE length of option ROM in 512-byte pages (should be multiple 4)
03h 4 BYTEs standard initialization entry point
(called with ES:DI -> PnP Installation Structure)
07h 19 BYTEs reserved
1Ah WORD offset to PnP Expansion Header
Format of Expansion Header:
Offset Size Description (Table F0083)
00h 4 BYTEs signature ("$PnP" for Plug-and-Play expansion header)
04h BYTE structure version number
05h BYTE length of entire header in paragraphs
06h WORD offset to next header or 0000h
08h BYTE reserved
09h BYTE checksum (sum of all bytes in header, including this one,
mod 256 should equal zero)
---PnP Expansion Header---
0Ah DWORD Plug-and-Play device identifier
0Eh WORD offset of manufacturer ID string in Option ROM or 0000h
10h WORD offset of product name string in Option ROM or 0000h
12h 3 BYTEs device type code (see #F0085)
byte 0: base type (general kind of device)
byte 1: device subtype
byte 2: device programming interface
15h BYTE device indicator flags (see #F0084)
16h WORD Boot Connection Vector offset (real/protected mode) or 0000h
(see #F0089)
18h WORD Disconnect Vector offset (real/protected mode) or 0000h
far-called by system BIOS is boot attempt failed
1Ah WORD bootstrap entry point (real/protected mode) or 0000h
1Ch WORD reserved (0)
1Eh WORD Static Resource Information offset (real/prot mode) or 0000h
should be used only by non-PnP devices to make them PnP-aware
(see #F0090)
Bitfields for Plug-and-Play device indicator flags:
Bit(s) Description (Table F0084)
7 supports Device Driver Initialization model
6 may be shadowed in RAM
5 may be read cached
4 only required if device used for booting
3 reserved (0)
2 device is Initial Program Load (IPL, i.e. boot) device
1 device is Input device
0 device is Display device
SeeAlso: #F0085
(Table F0085)
Values for Plug-and-Play device type code:
Type Subtype Description
00h --- reserved
01h --- mass storage
00h SCSI controller
01h IDE controller
programming interface (see #F0087)
02h floppy controller (NEC 765-compatible)
03h IPI controller
04h RAID controller
80h other
02h --- network interface controller
00h Ethernet
01h Token Ring
02h FDDI
03h ATM
80h other
03h --- display controller
00h VGA
programming interface 00h = VGA registers
programming interface 01h = 8514/A-compatible registers
01h SuperVGA
02h XGA
80h other
04h --- multi-media controller
00h video
01h audio
80h other
05h --- memory
00h RAM
01h Flash memory
80h other
06h --- bridge controller
00h host processor bridge
01h ISA bridge
02h EISA bridge
03h MicroChannel bridge
04h PCI bridge
05h PCMCIA bridge
06h NuBus bridge
07h CardBus bridge
80h other
07h --- communications device
00h XT-compatible RS-232
01h AT-compatible parallel port
80h other
08h --- system peripherals
00h 8259-compatible Programmable Interrupt Controller
01h 8237-compatible DMA Controller
02h 8254-compatible system timer
03h real-time clock
80h other
09h --- input device
00h keyboard controller
01h digitizer/pen
02h mouse
80h other
0Ah --- docking station
00h generic docking station
80h other
0Bh --- CPU
00h 386-based
01h 486-based
02h Pentium-based
03h Pentium-Pro (P6)
10h DEC Alpha
40h coprocessor
80h other
0Ch --- Serial Bus controller
00h Firewire (IEEE 1394)
01h ACCESS.bus
02h SSA
03h Universal Serial Bus (USB)
programming interface 10h = OpenHCI Host Controller
04h Fiber Channel
80h other
SeeAlso: #F0084,#F0086,#00878
(Table F0086)
Values for Plug-and-Play generic EISA device ID:
PNP0xxx system devices
PNP00xx interrupt controller
PNP0000 AT interrupt controller
PNP0001 EISA interrupt controller
PNP0002 MCA interrupt controller
PNP0003 APIC
PNP0004 Cyrix SLiC MP interrupt controller
PNP01xx timer
PNP0100 AT timer
PNP0101 EISA timer
PNP0102 MCA timer
PNP02xx DMA controller
PNP0200 AT DMA controller
PNP0201 EISA DMA controller
PNP0202 MCA DMA controller
PNP03xx keyboard
PNP0300 PC/XT keyboard controller (83-key)
PNP0301 PC/AT keyboard controller (84-key)
PNP0302 PC/XT keyboard controller (84-key)
PNP0303 IBM enhanced keyboard (101/102-key, PS/2 mouse)
PNP0304 Olivetti keyboard (83-key)
PNP0305 Olivetti keyboard (102-key)
PNP0306 Olivetti keyboard (86-key)
PNP0307 enhanced keyboard with Windows keys
PNP0308 General Input Device Emulation Interface (GIDEI) legacy
PNP0309 Olivetti keyboard (A101/102-key)
PNP030A AT&T 302 keyboard
PNP04xx parallel port
PNP0400 standard printer port
PNP0401 ECP printer port
PNP05xx serial port
PNP0500 standard 8250/16450 UART
PNP0501 16550A-compatible UART
PNP06xx disk controller
PNP0600 generic ESDI/IDE/ATA controller
PNP0601 Plus Hardcard II
PNP0602 Plus Hardcard IIXL/EX
PNP0700 standard floppy controller
PNP0800 PC speaker
PNP09xx display adapter
PNP0900 VGA-compatible
PNP0Axx periperal bus
PNP0A00 ISA
PNP0A01 EISA
PNP0A02 MCA
PNP0A03 PCI
PNP0A04 VESA/VL bus
PNP0A05 generic ACPI bus
PNP0A06 extended IO bus
PNP0A07 SMB bus
PNP0A08 ACPI three-wire device bus
PNP0A09 ACPI two-wire device bus
PNP0B00 AT-style real-time clock
PNP0Cxx BIOS/system board
PNP0C00 Plug-and-Play BIOS
PNP0C01 system board
PNP0C02 (PnP-reserved resources)
PNP0C03 Plug-and-Play event notification interrupt
PNP0C04 math coprocessor
PNP0C08 ACPI driver/BIOS
PNP0C09 embedded controller device
PNP0C0A control method battery
PNP0C0B fan
PNP0C0C power button
PNP0C0D lid
PNP0Exx PCMCIA controller chipset
PNP0E00 Intel 82365-compatible
PNP0Fxx mouse
PNP8xxx network adapter
PNP9xxx modem
PNPAxxx SCSI controller/proprietary CD-ROM controller
PNPA000 Adaptec 154x-compatible
PNPA001 Adaptec 174x-compatible
PNPA002 Future Domain 16-700-compatible
PNPBxxx sound/video/multimedia
PNPB000 Sound Blaster 1.5
PNPB001 Sound Blaster 2.0
PNPB002 Sound Blaster Pro
PNPB004 Thunderboard
PNPB005 Adlib-compatible FM synthesis
PNPB006 MPU-401
PNPB007 Microsoft Windows Sound System
PNPB008 Compaq Waveform
PNPB010 Motion Video device (MCI)
PNPB011 MIDI Sequencer (MCI)
PNPB012 Wave Audio (MCI)
PNPB013 VISCA VCR (MCI)
PNPB014 Pioneer Laserdisk (MCI)
PNPB015 CD Audio (MCI)
PNPB020 Yamaha OPL3-compatible FM synthesis
PNPB02F joystick/game port
ACPI0001 three-wire serial memory device
ACPI0002 two-wire serial memory device
SeeAlso: #F0085,#F0088
Bitfields for Plug-and-Play IDE programming interface:
Bit(s) Description (Table F0087)
7 bus mastering (read-only)
6-4 reserved (read-only)
3 secondary IDE mode bit is writable (read-only)
2 secondary IDE mode (0 = legacy, 1 = native)
1 primary IDE mode bit is writable (read-only)
0 primary IDE mode (0 = legacy, 1 = native)
SeeAlso: #F0085
(Table F0088)
Values for data tags:
22h IRQ descriptor, no flags
23h IRQ descriptor, with flags
2Ah DMA descriptor
30h Dependent Function start
31h Dependent Function start, with priority byte
38h Dependent Function end
47h I/O port descriptor
4Bh fixed-location I/O port descriptor
78h "END_TAG" end of resource descriptors
SeeAlso: #F0086
(Table F0089)
Values Boot Connection Vector is called with:
AX = which vectors to hook
bit 2: connect as IPL (INT 13)
bit 1: connect as primary video (INT 10)
bit 0: connect as primary input (INT 09)
ES:DI -> system BIOS PnP Installation Check Structure
BX = Card Select Number for this card (ISA bus only)
DX = read data port (ISA only) or FFFFh
SeeAlso: #F0090
(Table F0090)
Values Static Resource Information vector is called with:
ES:DI -> buffer for device's static resource config info (at least 1024
bytes)
SeeAlso: #F0089
Format of Plug-and-Play System Device Node:
Offset Size Description (Table F0091)
00h WORD size of device node in bytes
02h BYTE device node number/handle
03h DWORD EISA product identifier
07h 3 BYTEs device type code
0Ah WORD attribute flags
bits 15-9 reserved (0)
bits 8-7: configurability
00 can only be statically configured for next boot
01 can be dynamically configured at runtime
10 reserved
11 can only be dynamically configured
bit 6: removable device
bit 5: docking station
bit 4: capable of being primary IPL (boot) device
bit 3: capable of being primary input device
bit 2: capable of being primary output device
bit 1: device is not configurable
bit 0: device can not be disabled
0Ch var allocated resource configuration descriptors
var possible resource configuration descriptors
var compatible device identifiers
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - POST Memory Manager Specification (PMM) v1.0
InstallCheck: scan paragraph boundaries E000h to FFFFh for signature string
"$PMM" followed by a valid PMM header structure (see #F0092)
Note: the PMM is only available at system boot -- between the completion
of the memory check and the call to INT 19; this includes Option
ROM initialization and Plug-and-Play Boot Connection Vectors, but
not the Bootstrap Entry Vector (which is called after INT 19)
SeeAlso: INT 2F/AX=4300h,INT 67/AH=40h
Format of POST Memory Manager Specification structure:
Offset Size Description (Table F0092)
00h 4 BYTEs signature "$PMM"
04h BYTE structure version number (01h)
05h BYTE length of structure in bytes
06h BYTE checksum of structure (value needed to force byte-wise sum
of entire structure to be 00h)
07h DWORD -> PMM entry point (real mode only) (see #F0093)
0Bh 5 BYTEs reserved (0)
SeeAlso: #F0024
(Table F0093)
Call POST Memory Manager Specification entry point with:
STACK: WORD function number
0000h pmmAllocate (see #F0094)
0001h pmmFind (see #F0095)
0002h pmmDeallocate (see #F0096)
additional parameters vary by function
Notes: PMM calls use standard large-model C-language calling conventions
the caller must provide at least 256 bytes of stack space; BIOSes
which support this specification will provide at least 1024 bytes
of stack space when calling a ROM initialization vector, Boot
Connection Vector, or Bootstrap Entry Vector (thus allowing the
Option ROM's code to provide sufficient stack space when calling
the PMM)
(Table F0094)
Call PMM "pmmAllocate" entry point with:
STACK: WORD 0000h (function "pmmAllocate")
DWORD length of memory block, in paragraphs
if 00000000h, only get size of largest available block
DWORD handle to assign to memory block, or FFFFFFFh for
"anonymous" block
WORD option flags
bit 0: allocate from conventional memory
bit 1: allocate from extended memory
bit 2: use alignment based on least-significant set
bit of requested length
Return: DX:AX = 32-bit physical address of allocated memory block, or
size of largest available block in paragraphs, or
00000000h if specified handle is already in use, or
FFFFFFFFh if allocation failed
Notes: at least one of bits 0 and 1 must be set in the option flags; both
may be set if the location of the memory block is not important
the specification requires that an Option ROM must use handles
compliant with the Plug-and-Play specification (high 16 bits are
manufacturer's vendor ID, low 16 bits are vendor-defined); handles
whose highest bit is set or highest six bits are all clear are
reserved for the BIOS, and the BIOS may flag attempts to use such
reserved handles
SeeAlso: #F0093,#F0095,#F0096
(Table F0095)
Call PMM "pmmFind" entry point with:
STACK: WORD 0001h (function "pmmFind")
DWORD handle to be found
Return: DX:AX = 32-bit physical address of allocated memory block, or
00000000h if handle is not in use
Desc: get the address of the memory block associated with the given handle
SeeAlso: #F0093,#F0094,#F0096
(Table F0096)
Call PMM "pmmDeallocate" entry point with:
STACK: WORD 0002h (function "pmmDeallocate")
DWORD physical address of block (as returned by pmmAllocate)
Return: DX:AX = FFFFFFFFh on error
Notes: the memory block is cleared to all zeros by the PMM
invalid functions (0003h-FFFFh) return DX:AX = FFFFFFFFh
SeeAlso: #F0093,#F0094,#F0095
--------b-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - BIOS Boot Specification (BBS)
InstallCheck: perform Plug-and-Play installation check, then call PnP
function 60h
SeeAlso: @xxxxh:xxxxh"Plug-and-Play"
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - QEMM Programming Interface (QPI)
InstallCheck: see INT 67/AH=3Fh
SeeAlso: INT 67/AH=3Fh
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - QEXT.SYS Private API
InstallCheck: see INT 15/AX=11DEh
SeeAlso: INT 15/AX=11DEh
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Quarterdeck VIDRAM
InstallCheck: see INT 2F/AX=D201h/BX=5649h
SeeAlso: INT 2F/AX=D201h/BX=5649h
--------s-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - SoundBlaster Speech Driver
InstallCheck: see INT 2F/AX=FBFBh
SeeAlso: INT 2F/AX=FBFBh
--------k-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Stacker
InstallCheck: see INT 2F/AX=4A12h/CX=5354h
SeeAlso: INT 2F/AX=4A12h/CX=5354h
--------s-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - VESA Audio Interface Driver
InstallCheck: see INT 10/AX=4F13h/BX=0002h
SeeAlso: INT 10/AX=4F13h/BX=0002h
--------m-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - Virtual Control Program Interface (VCPI) - Protected-Mode
InstallCheck: see INT 67/AX=DE01h
SeeAlso: INT 67/AX=DE01h
--------N-@xxxxxxxx--------------------------
CALL xxxxh:xxxxh - WEB v4.02 - MODULE APIs
InstallCheck: see INT 2F/AH=EEh
SeeAlso: INT 2F/AH=EEh
---------------------------------------------
----------@xxxxxxxx--------------------------
CALL xxxxh:xxxxh -
InstallCheck:
SeeAlso:
--------!---Admin----------------------------
Highest Table Number = F0096
--------!---FILELIST-------------------------
Please redistribute all of the files comprising the interrupt list (listed at
the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
quartet of archives named INTER60A through INTER60D (preferably the original
authenticated PKZIP archives), and the utility and hypertext conversion
programs in three additional archives called INTER60E.ZIP to INTER60G.ZIP
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
--------!---CONTACT_INFO---------------------
Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
FIDO: Ralf Brown 1:129/26.1